package de.g18.llmaa.gui.menueBar;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;

import de.g18.llmaa.gui.App_LLMAA_Controler;
import de.g18.llmaa.gui.App_Model_Database;
import de.g18.llmaa.gui.IApp_Beobachter;
import de.g18.llmaa.gui.IApp_Controler;
import de.g18.llmaa.gui.IApp_Model;
import de.g18.llmaa.gui.workspace.Workspace_Crtl;
import de.g18.llmaa.gui.workspace.internalFrame.dbAbgleich.InternalFrame_DB_Abgleich;
import de.g18.llmaa.gui.workspace.internalFrame.lizenzUebersicht.InternalFrame_LizenzAnzeigen;
import de.g18.llmaa.gui.workspace.internalFrame.xmlEinlesen.InternalFrame_XmlEinlesen;

public class App_MenuBar extends JMenuBar implements IApp_Beobachter {

	private JMenu menu_Datei;
	private JMenuItem menuItem_Exit;
	private JMenuItem menuItem_LizenzRead;
	private JMenuItem menuItem_DatenbankAbgleich;
	private JMenuItem menuItem_DatenbankSchwenken;

	private JMenu menu_Configuration;
	private JMenuItem menuItem_DBConfiguration;

	private JMenu menu_Anzeige; 
	private JMenuItem menuItem_Anzeige_Alle;
	private JMenuItem menuItem_Anzeige_Alle_Produkte;
	
	private JMenu menu_Help;

//	private IApp_Model model;
	
	private IApp_Controler appCrtl;

	public App_MenuBar(IApp_Controler appCrtl) {
		this.appCrtl = appCrtl;
		appCrtl.registerBeobachter(this);
		initGUI();
	}

	private void initGUI() {
		add(getMenu_Datei());
		add(getMenu_Anzeige());
		add(getMenu_Configuration());
		add(getMenu_Help());
		
//		if(model.getList_ProductKey().size()==0)
//		{
			getMenu_Anzeige().setEnabled(false);
//		}
		

	}

	public JMenu getMenu_Datei() {
		if (menu_Datei == null) {
			menu_Datei = new JMenu("Datei");
			menu_Datei.add(getMenuItem_LizenzRead());
			menu_Datei.add(getMenuItem_DatenbankAbgleich());
			menu_Datei.add(getMenuItem_DatenbankSchwenken());
			menu_Datei.addSeparator();
			menu_Datei.add(getMenuItem_Exit());
		}
		return menu_Datei;
	}

	
	
	public JMenuItem getMenuItem_DatenbankSchwenken() {
		if(menuItem_DatenbankSchwenken == null)
		{
			menuItem_DatenbankSchwenken = new JMenuItem("DB Schwenk");
			menuItem_DatenbankSchwenken.addActionListener(new ActionListener() {
				
				@Override
				public void actionPerformed(ActionEvent arg0) {
					App_LLMAA_Controler.getInstanze().setModel(new App_Model_Database());
					
				}
			});
		}
		return menuItem_DatenbankSchwenken;
	}

	public JMenuItem getMenuItem_Exit() {
		if (menuItem_Exit == null) {
			menuItem_Exit = new JMenuItem("Exit");
			menuItem_Exit.addActionListener(new ActionListener() {

				@Override
				public void actionPerformed(ActionEvent arg0) {
					System.exit(0);

				}
			});
		}

		return menuItem_Exit;
	}

	public JMenuItem getMenuItem_LizenzRead() {
		if(menuItem_LizenzRead==null)
		{
			menuItem_LizenzRead = new JMenuItem("Lizenzen Einlesen");
			menuItem_LizenzRead.addActionListener(new ActionListener() {
				
				@Override
				public void actionPerformed(ActionEvent arg0) {
					Workspace_Crtl.getInstnace().addVisibleComponent(new InternalFrame_XmlEinlesen());
					
				}
			});
			
		}
		return menuItem_LizenzRead;
	}

	public JMenu getMenu_Configuration() {
		if (menu_Configuration == null) {
			menu_Configuration = new JMenu("Einstellungen");
			menu_Configuration.add(getMenuItem_DBConfiguration());
		}
		return menu_Configuration;
	}

	public JMenuItem getMenuItem_DBConfiguration() {
		if (menuItem_DBConfiguration == null) {
			menuItem_DBConfiguration = new JMenuItem("DB Config");
		}
		return menuItem_DBConfiguration;
	}

	public JMenu getMenu_Help() {
		if (menu_Help == null)
			menu_Help = new JMenu("Hilfe");
		return menu_Help;
	}

	public JMenu getMenu_Anzeige() {
		if(menu_Anzeige==null)
		{
			menu_Anzeige = new JMenu("Anzeigen");	
			menu_Anzeige.add(getMenuItem_Anzeige_Alle());
		}
		
		
		return menu_Anzeige;
	}

	public JMenuItem getMenuItem_Anzeige_Alle() {
		if(menuItem_Anzeige_Alle==null)
		{
			menuItem_Anzeige_Alle = new JMenuItem("Alle Lizenzen Anzeigen");
			menuItem_Anzeige_Alle.addActionListener(new ActionListener() {
				
				@Override
				public void actionPerformed(ActionEvent arg0) {
					Workspace_Crtl.getInstnace().addVisibleComponent(new InternalFrame_LizenzAnzeigen(appCrtl));
					
				}
			});
		}
		return menuItem_Anzeige_Alle;
	}

	public JMenuItem getMenuItem_Anzeige_Alle_Produkte() {
		return menuItem_Anzeige_Alle_Produkte;
	}

	@Override
	public void aktualisiere(IApp_Model model) {
		if(model.getList_ProductKey().size() >0)
		{
			getMenu_Anzeige().setEnabled(true);
		}
		
	}

	public JMenuItem getMenuItem_DatenbankAbgleich() {
		if(menuItem_DatenbankAbgleich ==null)
		{
			menuItem_DatenbankAbgleich = new JMenuItem("Datenbank Abgleich");
			menuItem_DatenbankAbgleich.addActionListener(new ActionListener() {
				
				@Override
				public void actionPerformed(ActionEvent arg0) {
					Workspace_Crtl.getInstnace().addVisibleComponent(new InternalFrame_DB_Abgleich());
					
				}
			});
		}
		return menuItem_DatenbankAbgleich;
	}
	
	

}
